大话通信工程(上篇)
先自我介绍一下,本人李宇,本科时候985学校的通信工程,到现在工作满4年,在武汉一私企,14K月薪,这水平在很多北上广的程序猿眼中可能不算什么,但在武汉这个互联网二线城市里拿这个价我已经很满足了。
当时选专业的时候觉得这名字酷炫吊炸天,通信工程,communication engineering,毫不犹豫的跳坑了。结果四年下来,最大的感受就是,尼玛学的东西太多了,但是然并卵。。。
我敢说,通信工程是所有工科学科中要学科目最多的一种,金工实习马列主义思想通识这些扯蛋的课就不说了,高等数学概率论线性代数这些理工科最基本的基础也不提了,但是我们尼玛还学化学!没错!大!学!化!学!你敢说这不是然并卵系列?!好在这门课趣味性强,考试也不难。但是大学物理就坑的一逼了。
你可能会说大学物理也是基础呀,没错,是基础,但是以后的专业课基本用不到啊,而且巨尼玛难啊,什么动能角动量谐波热力学电场磁场光学电磁波,想想就头疼,而且要学整整两个学期,反正当时身边的同学们上课基本都是玩手机。。。是的,这就是985大学上物理课的风景。结果到考试的时候老师又在报复社会,班上基本一半以上都要补考,答主当年人品爆发,清晰的记得大物第一学期63,第二学期61。。。
大二的时候学了好多数学科目,复变函数、积分变换、离散数学等等,不得不说,这几门课还真得好好学。如果你想做通信理论,复变和积分必须学好,这是信号系统的基础。如果以后想搞软件,离散数学就必须扎实。问问现在CS的同学,算法才是优秀程序员与一般程序员的分水岭。答主也是毕业一两年后才悟出的,当年没重视这些,搞得现在还天天学数学,学弟学妹们吸取教训啊。
到了大二下学期,专业课来了,尼玛又是巨多坑,硬件软件理论学了个遍,软件方面有C、C++、MFC、数据结构,硬件方面模电、数电、高频电路、EDA、DSP、单片机、通信电路、计算机组成原理、PCB电路板焊接,理论方面计算机网络、通信原理、信号与系统、离散信号处理、电磁场与电磁波(真正虐心)、数字图像处理数字语音处理(这两门好像是选修)。是的,你没看错!不要四年!不要三年!也不要两年!只要一年半的时间就能上这么多课程!还在犹豫什么,赶快拿起电话报名吧!冷静冷静,嗯。。这么多课程就压缩到一年半的时间学完,你觉得能学到什么?很多都是走马观花的上一遍,到了考试又要求老师指点江山,考完之后发觉只领略到了一点皮毛。现在是不是觉得然并卵?
不过可以理解,通信工程本来就是一个很大的学科,是很多学科交叉的重灾区,是一个理论与实践紧密结合的典型科目,里面每一个方面都是可以独成一面的大学问。本科生也就只能这样走马观花似的教学了,不可能面面深入。
这样做的好处是,通信工程学生的接触面都很广,而且这样能帮助你发现自己的兴趣点,到底自己是适合软件,适合硬件,还是适合搞理论。
毕业后,我大部分同学都直接工作了,到现在做什么的都有(刚毕业那会还有成天玩六合彩赚了不少钱的人),但是真正搞技术的貌似不多了,销售、技术支持、跑工程的比较多,所以想要搞技术还必须得耐得住性子。
工作的话,看你自己擅长什么,就我自己的经历而言给学弟学妹们提供一些经验,能帮一些是一些吧,毕竟江湖险恶人心叵测社会不好混啊。
如果你喜欢软件,可以选择以下方面:嵌入式软件,BSP驱动,通信协议,上层应用软件。
简单的嵌入式软件的话,就是单片机之类的,像什么51、STM32、AVR,一般都是做工业控制,搞这一类就必须对单片机的具体功能和实现特别熟悉,什么USART、I2C、PWM、DMA之类的都要信手拈来,而且要对芯片寄存器很熟悉,知道哪个功能配哪个寄存器,像SMT32这种提供外围设备驱动的还要对提供的固件库函数熟悉,运气好的话会碰到让你用单片机实现算法之类。但是这一类的话技术含量不是太高,因为毕竟知识点只有那么多,所以薪水不会太可观(当然特别厉害的除外),在武汉的话一般就是5K左右。
所以,一般搞单片机的都要往更深层次发展,就是裸板上跑跑操作系统,比如Linux或者VxWorks。只要上了操作系统,那内容可就多了,拿Linux来说,命令行要会用吧,系统编程要会写吧,网络编程要熟悉吧,GCC要会耍吧,Vim要会玩吧,操作系统的基础知识要熟悉吧,兴致来了兴许还要跑跑shell或者python之类的脚本文件,高级点的就要玩玩内核和驱动。
个人建议通信工程的学生其实可以往驱动方面走,因为软硬件都懂,恰好驱动就是软硬结合的一个方面,而且一个产品中驱动如果做成熟之后就不用经常变了,我现在的项目组里面那几个做BSP的哥们儿就是立项之后那一段时间忙死,但是现在都是让我们羡慕嫉妒恨的对象,每天准时乐呵乐呵下班。
但是驱动这条路学习曲线很陡,操作系统知识必须烂熟于心,内核代码也要好好研究,相关的硬件也要懂(数电必须懂,模电的话看个人造化),还时不时来个芯片让你驱动,那就还要去研究相干芯片的datasheet。但是学出来就好了,因为底层的知识变化不会那么快,所以做驱动的不会像做手机软件的整天加班成狗。如果VxWorks功底好,那工资不是一般的高。
通信协议,咩哈哈,答主感触颇深,因为就是靠这个薪水基本一年翻一番。可能是运气好,当时毕业的时候进了MPLS协议组(不懂的同学可以查下),这个协议很重要,现在电信联通的核心网里都用,但是做的人比较少,市场供不应求,恰好几年来工作的时候都是做这方面的协议,什么LDP、RSVP、L2 VPN、OAM之类的都懂,因此找工作可以放心跟别人谈价钱。这是我的经历,但是还有很多协议啊,像什么OSPF、ISIS、BGP等等,这些协议的RFC文档都是一百多页,光把协议看懂都要花不少时间(RFC文档都是全英文,所以英文必须要好,切记切记!),更不用说编码实现了。
不过还好,现在大公司里基本上都会买别人成熟的代码,只会让你维护,不会从头开始写。这些协议只要精通其中某一个,你都会成为通信市场上抢手的人才,因为实在是太重要了。
但是,搞协议有很多短处,其中最大的一个就是方向面特窄,到最后只会这一个协议,对整个产品的架构能力不会提高,而且都是买的成熟代码,编码能力不会得到很大的提升,所以你如果以后想自己创业的话就最好不要选协议,或者就要在业余时间多下点功夫学东西。
上层应用软件的话就不多说了,iOS,安卓,做好了工资高得离谱,但是数学必须要好,数据结构算法什么的必须烂熟于心。看看那些BAT的面试不都是问算法题么。
硬件方面不太懂,不做这一块,如果想做硬件的话,最基本的像模拟电路、数字电路、PCB布线等等必须要好。现在不是开源硬件挺火的么,想做硬件的同学们可以去看看。
理论的话可就深了,信号与系统、离散信号处理、数字图像处理、数字语音处理、通信系统集成等等,这些都是高大上的理论知识,研究透了成了大牛了基本不缺银子,而且市场需求比较广。比如美图的图像处理、微信的摇一摇歌曲识别功能,这里面就多少信号与系统的知识。
想从事理论的话最好去读研读博,同时基础数学必须要好,复变函数、积分变换、微积分、概率论、模式识别这一类的课程很重要。同时也要加强自己的编程能力,因为光会理论不行,还要理论与实践相结合,C语言要会,MATLAB要会玩,C++最好也要会,因为老外喜欢用C++封装功能。
发现写了好多。。。不过这都是一个通信工程过来人的感受,如果能给学弟学妹们有所帮助我就已经感激涕零了。是的,我们要学的课程是很多,但是只要你认真学,并且在某一个方面研究的有深度,你就是一个通信市场的人才,而且是跨市场的人才,我们不仅可以做硬件,还能做软件,学CS的是不是羡嫉恨?嘿嘿。。。
但是,学习是无止境的,刚毕业后你会发现学校里的东西太不够用了,因此必须不断的学习,不断的充实,这样才能保持自己不仅是在在通信市场,而且是在整个IT市场的竞争力。
Always stay hungry stay foolish,这是一个通信人应有的工作和生活态度。
本文作者:李宇(知乎)
注意:本文在知乎获赞5.5K,内容具有一定的参考意义。但是,发布时间稍微有点久了,是2015年,一些情况可能已经发生变化,所以仅供大家参考,不可盲目模仿或照搬。